/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appbastanteo1.controller;

import appbastanteo1.model.Grupo;
import appbastanteo1.*;
import java.util.ArrayList;

/**
 *
 * @author JuanJose.Fuchs
 */
public class AdmGrupos {

    private ArrayList<Grupo> grupos;

    public AdmGrupos() {
        grupos = new ArrayList<Grupo>();
    }

    /**
     * @return the poderes
     */
    public ArrayList<Grupo> getGrupos() {
        return grupos;
    }

    /**
     * @param poderes the poderes to set
     */
    public void setPoderes(ArrayList<Grupo> grupos) {
        this.grupos = grupos;
    }

    public void registrarGrupo(int id, String nombre) throws BusinessException {
        if (grupoExiste(id, nombre)) {
            throw new BusinessException("El grupo ya existe");
        }

        Grupo grupo = new Grupo(id, nombre);

        if (!verificarDatosRequeridos(grupo)) {
            throw new BusinessException("Todos los datos son obligatorios");
        }

        this.grupos.add(grupo);
    }

    public Grupo obtenerGrupo(int id) {
        for (Grupo grupo : grupos) {
            if (grupo.getId() == id) {
                return grupo;
            }
        }
        return null;
    }

    public Grupo obtenerGrupo(String nombre) {
        for (Grupo grupo : grupos) {
            if (grupo.getNombre().equals(nombre)) {
                return grupo;
            }
        }
        return null;
    }

    private boolean grupoExiste(int id, String nombre) {
        for (Grupo grupo : grupos) {
            if (grupo.getId() == id || grupo.getNombre().equalsIgnoreCase(nombre)) {
                return true;
            }
        }
        return false;
    }

    private boolean nombreExiste(String nombre) {
        for (Grupo grupo : grupos) {
            if (grupo.getNombre().equalsIgnoreCase(nombre))
                return true;
        }
        return false;
    }

    private boolean verificarDatosRequeridos(Grupo grupo) {
        return grupo.getId() > 0 && !grupo.getNombre().isEmpty();
    }

    public void modificarGrupo(int id, String nuevoNombre) throws BusinessException {
        if (nombreExiste(nuevoNombre)) {
            throw new BusinessException("El nombre de grupo ya existe");
        }
        Grupo grupo = this.obtenerGrupo(id);
        grupo.setNombre(nuevoNombre);
    }

    public void eliminarGrupo(int id) {
        Grupo grupo = this.obtenerGrupo(id);
        this.grupos.remove(grupo);
    }
}
